From 3ef03c8bc0bed418406418127061ffc489aa938e Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Thu, 15 Dec 2016 10:08:46 +0100 Subject: [PATCH] gsk: Check for NULL in calls to gsk_cairo_node_get_surface() That function does actually sometimes return NULL and is documented to do so, so handle that case in the renderers (by omitting the node). --- gsk/gskglrenderer.c | 3 +++ gsk/gskvulkanrenderpass.c | 9 ++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/gsk/gskglrenderer.c b/gsk/gskglrenderer.c index 1c09244b5e..09a63ed874 100644 --- a/gsk/gskglrenderer.c +++ b/gsk/gskglrenderer.c @@ -713,6 +713,9 @@ gsk_gl_renderer_add_render_item (GskGLRenderer *self, cairo_surface_t *surface = gsk_cairo_node_get_surface (node); int gl_min_filter = GL_NEAREST, gl_mag_filter = GL_NEAREST; + if (surface == NULL) + return; + get_gl_scaling_filters (node, &gl_min_filter, &gl_mag_filter); /* Upload the Cairo surface to a GL texture */ diff --git a/gsk/gskvulkanrenderpass.c b/gsk/gskvulkanrenderpass.c index a2d66c8cf5..81912dd8be 100644 --- a/gsk/gskvulkanrenderpass.c +++ b/gsk/gskvulkanrenderpass.c @@ -100,9 +100,12 @@ gsk_vulkan_render_pass_add_node (GskVulkanRenderPass *self, break; case GSK_CAIRO_NODE: - op.type = GSK_VULKAN_OP_SURFACE; - op.render.pipeline = gsk_vulkan_render_get_pipeline (render, GSK_VULKAN_PIPELINE_BLIT); - g_array_append_val (self->render_ops, op); + if (gsk_cairo_node_get_surface (node) != NULL) + { + op.type = GSK_VULKAN_OP_SURFACE; + op.render.pipeline = gsk_vulkan_render_get_pipeline (render, GSK_VULKAN_PIPELINE_BLIT); + g_array_append_val (self->render_ops, op); + } break; case GSK_TEXTURE_NODE: -- 2.30.2